package com.atguigu.lease.common.sms;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(AliyunSMSProperties.class)
//如果该模块的配置文件中没有写入aliyun的相关配置，那么就不将该配置类加载到ioc容器中
//如果不写这段代码，那么在web-admin模块中，配置文件没有相关aliyun的内容
//那么此时，web-admin模块也会去加载这个配置类，并且加载短信服务的相关bean，
//这个时候会导致加载进入的bean对象为空，因为我们没有写配置文件
//那么最终就会导致报错，同理在web-admin模块中的minio的配置类，也要加上这个注解来放置web-app模块报错
@ConditionalOnProperty(prefix = "aliyun.sms", name = "endpoint")
public class AliyunSMSConfiguration {
    //这里是阿里云短信服务需要的一些配置属性，我们将其封装在一个对象中，并且通过配置文件来进行配置
    @Autowired
    private AliyunSMSProperties properties;

    /**
     * 将阿里云短信服务的客户端对象加载到ioc容器中
     * @return
     */
    @Bean
    public Client Client() {
        // 创建配置对象
        Config config = new Config();
        // 设置你的AccessKey ID和AccessKey Secret以及短信服务API的接入点
        config.setAccessKeyId(properties.getAccessKeyId());
        config.setAccessKeySecret(properties.getAccessKeySecret());
        config.setEndpoint(properties.getEndpoint());
        try {
            return new Client(config);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}